package com.blkbox.dp.proxy;

public class Proxy implements Sourceable {
	private Sourceable source;

	public Proxy() {
		super();
		//关系在编译时确定
		this.source = new Source();
		// 装饰器模式关注于在一个对象上动态的添加方法，然而代理模式关注于控制对对象的访问。换句话 说，用代理模式，代理类（proxy
		// class）可以对它的客户隐藏一个对象的具体信息。因此，当使用代理模式的时候，我们常常在一个代理类中创建一个对象的实例。而当我们使用装饰器模
		// 式的时候，我们通常的做法是将原始对象作为一个参数传给装饰者的构造器。
		
		//我们可以用另外一句话来总结这些差别：使用代理模式，代理和真实对象之间的的关系通常在编译时就已经确定了，而装饰者能够在运行时递归地被构造。    
	}

	public void method() {
		System.out.println("before decorator!");
		source.method();
		System.out.println("after decorator!");
	}

	public void methodBF() {
		System.out.println("before  proxy!");
	}

	public void methodAF() {
		System.out.println("after proxy!");
	}

}
